﻿================================================================================
            RE CONNECT SİSTEMİ  -  ARŞİV İÇİNDEKİLER
                     v2369  (Kaynak sürüm)
================================================================================

Arşiv Konumu : -
Oluşturma    : 26.09.2026
Kaynak Ağacı : -SOURCE\GameServer   (SUNUCU)
              - Anti-Cheat v2369\...\Pearl Guard             (İSTEMCİ)
Kodlama      : UTF-8 (BOM'lu) — Not Defteri / VS Code / VS 2022 ile sorunsuz


--------------------------------------------------------------------------------
  1. SİSTEM NEDİR?
--------------------------------------------------------------------------------
Yeniden bağlanma (Reconnect) sistemi, oyuncunun bağlantısı koptuğunda
karakterini sunucuda "askıda" tutan ve 15 saniye içinde aynı karaktere
tekrar bağlanmasını sağlayan mekanizmadır. Test komutu:  /reconnecttest

Akış:
    IN_GAME --Begin(15s)--> SUSPENDED --Confirm(token)--> IN_GAME
                              |
                              +--IsExpired()--> disconnect / kurtarma

Askıya alınan karakter oyunda kalır ANCAK:
  * tüm oyuncu aksiyonları paket filtresiyle yutulur (sessizce),
  * konum (anchor) sabitlenir, yeniden bağlanınca buraya dönülür,
  * parti üyeliği ticket'a snapshot olarak alınır, resume'da geri bağlanır,
  * merchant/genie durumu ticket'a kaydedilir.


--------------------------------------------------------------------------------
  2. PROTOKOL (ağ paketleri)
--------------------------------------------------------------------------------
  Ana kanal  : XSafe (0xE9)  ->  alt opcode  WIZ_RECONNECT (0xEE)
  Paket yapısı:  [XSafe 0xE9][WIZ_RECONNECT 0xEE][requestType][gövde]

  requestType  yönü                    açıklama
  -----------  ----------------------  ----------------------------------------
      1        SUNUCU -> ISTEMCI       token dağıtımı
      2        ISTEMCI -> SUNUCU       yeniden bağlanma isteği
      3        SUNUCU -> ISTEMCI       sonuç / ACK bildirimi
      4        ISTEMCI -> SUNUCU       transport durum bilgisi
      5        SUNUCU -> ISTEMCI       UI panelini aç (+ süre)
      6        ISTEMCI -> SUNUCU       panel "Yes" onayı
      7        SUNUCU -> ISTEMCI       onay / iptal işlendi
      8        ISTEMCI -> SUNUCU       hemen disconnect
      9        SUNUCU -> ISTEMCI       disconnect uygulandı
     10        ISTEMCI -> SUNUCU       "Yes" onayı (karakter ID dahil)
     11        SUNUCU -> ISTEMCI       reconnect hakkı iptal (premium düştü)

  Güvenlik    : RECONNECT_MAX_CONFIRM_ATTEMPTS = 5  (üst üste hatalı onayda
                oturum sonlandırılır)
  Süre        : RECONNECT_TEST_HOLD_SECONDS = 15


--------------------------------------------------------------------------------
  3. KLASÖR YAPISI
--------------------------------------------------------------------------------
  RE CONNECT SİSTEMİ\
    ├── 00_IÇİNDEKİLER.txt                        (bu dosya)
    ├── 01_SUNUCU_ GameServer\
    │   ├── ReconnectSuspend.h.txt                 ← ÇEKİRDEK (tam dosya)
    │   ├── ReconnectSuspend.cpp.txt               ← ÇEKİRDEK (tam dosya)
    │   ├── 01_Define.h....txt                    ← protokol sabitleri
    │   ├── 04_GameSocket.cpp....txt               ← socket token gönderimi
    │   ├── 05_PremiumSystem.cpp....txt            ← premium bitişinde iptal
    │   ├── 06_DatabaseThread.cpp....txt           ← logout koruması
    │   ├── 07_ServerStartStopHandler.cpp....txt   ← sunucu açılış geri yükleme
    │   ├── 08_ChatHandler.cpp....txt              ← /reconnecttest komutu
    │   ├── 09_PartyHandler.cpp....txt             ← parti askı koruması
    │   ├── 10_XGuard.cpp....txt                   ← 0xEE alt-opcode dispatch
    │   ├── 11_CharacterSelectionHandler.cpp.txt   ← karakter seçimi ACK
    │   ├── 12_User.h....txt                       ← üye/metot bildirimleri
    │   ├── 13_User.cpp....txt                     ← ANA İMPLEMENTASYON
    │   └── 14_GameServerDlg.h....txt              ← COMMAND_HANDLER bildirimi
    └── 02_ISTEMCI_PearlGuard\
        ├── Pearl Engine.cpp.txt                    ← ANA İSTEMCİ MOTORU
        ├── MessageBoxUIF.cpp.txt                   ← onay penceresi (Yes/No)
        ├── PearlGui.cpp.txt                        ← PollReconnectUi() çağrısı
        └── stdafx.h.txt                            ← istemci sabitleri


--------------------------------------------------------------------------------
  4. DOSYA BİÇİMİ / OKUMA KURALLARI
--------------------------------------------------------------------------------
Her .txt dosyasının başında 8 satırlık başlık bloğu vardır:
    DOSYA ADI / KAYNAK / SISTEM / BOYUT / ACIKLAMA / ESLESME

  * ReconnectSuspend.h/.cpp  →  TAM DOSYA kopyasıdır (bütün içerik).
  * "*.reconnect-bloklari.txt"  →  SADECE reconnect ile ilgili kod blokları.
        Sol taraftaki "  1234 | " rakamları KAYNAK dosyadaki orijinal
        satır numarasıdır; arama yaparken bu numaraları kullanın.
        Kod blokları arasında bağlam satırları (bkz. >> KAYNAK SATIR X - Y)
        yer alır.

  Arama ipucu: her dosyada "KAYNAK SATIR" ifadesiyle blok başları,
  "RECONNECT" (BÜYÜK HARF) ile sunucu tarafı sembolleri bulunur.


--------------------------------------------------------------------------------
  5. EN ÖNEMLİ 4 DOSYA (port/review için başlangıç)
--------------------------------------------------------------------------------
  1) 13_User.cpp.reconnect-bloklari.txt  (4 blok / 287 eşleşme)
         → tüm reconnect mantığı: token üretimi, ticket, suspend, confirm,
           resume, parti/merchant/genie snapshot ve paket filtresi
  2) ReconnectSuspend.h.txt + .cpp.txt
         → CReconnectSuspend durum çekirdeği (CUser'dan bağımsız)
  3) 01_Define.h.reconnect-bloklari.txt
         → 0xEE opcode ve 11 requestType tanımları (protokol sözleşmesi)
  4) Pearl Engine.cpp.txt
         → istemci tarafı alıcı/satıcı + UI panel tetikleyici

================================================================================
